// 对线程中断的深层理解
// 使用Thread自带的表示位和方法，控制线程终止
// 分析：当执行到第三秒时，打印了两个"hello world!"，
// 然后t线程休眠，main线程在休眠0.3s，然后执行t.interrupt()，这时很明显的看到异常很快(0.3s)抛出
public class ThreadTest {
    public static void main(String[] args) {
        Thread t = new Thread(()->
        {
            while (!Thread.currentThread().isInterrupted()){
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                    // 法一：不加break：线程t忽略了你的终止请求
                    // break;  // 法二：线程t立刻响应你的终止请求

                    // 法三：稍后在处理终止请求
                    try {
                        Thread.sleep(100);
                    } catch (InterruptedException interruptedException) {
                        interruptedException.printStackTrace();
                    }
                    break;

                }
                System.out.println("hello thread!");
            }
        });

        t.start();

        try {
            Thread.sleep(2300);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        // 终止t线程
        t.interrupt();
    }
}
